"""

时间复杂度：看程序执行次数 O（n）
与空间复杂度 T（n）

先默认排序从小到大排序
"""
# from h5py.h5p import PropDAID
#
# i = 0
# n = 100
# while i<n:
#     j = 0
#     while j<n:
#         j += 1
#         k = 0
#         while k<5*n:
#             k += 1
#     i += 1
#
# k = 0
# while k<3:
#     pass

"""
冒泡排序
列表一堆数字，从前到后两两比较大小，小的往前，轮一次之后
再进行两两比较，小的往前，直到升序
"""
import random

class Sort:
    def __init__(self,count):
        self.length = count  #排序多少元素
        self.arr = [0] * self.length
        for i in range(self.length):
            self.arr[i] = random.randint(0,99)

    def bubble(self):
        arr = self.arr
        i = self.length - 1
        while i > 0: #外层控制无序数的数目
            flag = True  # 如果本身就有序，那排序结束
            j = 0
            while j < i: #内层控制比较
                if arr[j] > arr[j + 1]:
                    arr[j], arr[j+1] = arr[j + 1], arr[j]
                    flag = False
                j += 1
            if flag:
                break
            i -= 1

    def select(self):
        arr = self.arr
        i = 0
        while i < self.length - 1:
            min_pos = i
            j = i + 1
            while j < self.length:
                if arr[j] < arr[min_pos]:
                    min_pos = j
                j += 1
            arr[i], arr[min_pos] = arr[min_pos], arr[i]
            i += 1


"""
选择法
用一个变量记录最小值的下标，然后转到前面
进行上述迭代
"""



if __name__ == '__main__':
    s = Sort(10)
    print(s.arr)
    # s.bubble()
    # print(s.arr)
    s.select()
    print(s.arr)







